package DesignPatterm.DependenceInversionPrinciple;

/**
 * 依赖倒置原则
 */
public class DependecyInversion {
    public static void main(String[] args) {
        Person person = new Person();
        person.receive(new Email());

    }
}

/*完成Person接收消息的功能
 * 方式一:简单,但是需求改变需要重写类,扩展性低
 * 解决思路:引入一个接口 IReceiver ,让person类 与 该 接口产生依赖关系;email 等其他去实现该接口,这样就符合了依赖倒置原则
 * 1.高层模块不应该依赖底层模块,二者应该依赖其抽象
 * 2.抽象不应该依赖细节,细节应该依赖抽象
 * 3.依赖倒置的中心思想是面向接口编程*/
//完成Person接受消息的功能
class Email {
    public String getInfo() {
        return "邮件信息:hello,world";
    }
}

class Person {
    public void receive(Email email) {
        System.out.println(email.getInfo());
    }
}